package com.Reactor3参考文档;

import java.io.File;

import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

public class WhenDemo {

	public static void main(String[] args) {
		// 等多个操作一起完成
		Mono<Void> test = Mono.when(Mono.just(1), Flux.just(3));
	}

	// 这个代码很好的展示了when操作符：我们对用户上传的文件进行处理，首先把图片复制到文件服务器的某一个路径，然后把路径信息保存到数据库，我们需要确保这两个操作都完成之后方法才能返回
	public Flux<Void> updateFiles(Flux<File> files) {
		return files.flatMap(file -> {
			Mono<String> copyFileToFileServer = Mono.just("copyFileToFileServer");
			Mono<String> saveFilePathToDatabase = Mono.just("saveFilePathToDatabase");
			return Mono.when(copyFileToFileServer, saveFilePathToDatabase);
		});
	}

}
